package org.haowentao.blo;

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class BioServer {

    //### 类比解释：插头与插座
    //
    //1. **服务器端**：就像墙上固定安装的 **电源插座**
    //
    //- 'ServerSocket
    //
    //2. **客户端**：就像带有插头的 **电器设备**
    //
    //- 客户端创建 `Socket` 相当于拿出插头
    //
    //3. **连接建立**：当插头插入插座时，电路连通

    //socket 插头 网卡
    public static void main(String[] args) throws Exception {
        //一个线程最多处理一个连接
        ServerSocket serverSocket = new ServerSocket(8081);
        while (true){
            //阻塞等待 等待客户端连接
            Socket accept = serverSocket.accept();
            InputStream inputStream = accept.getInputStream();
            byte[] buffer = new byte[1024];
            int length;

            //如果不断开连接 说明read 一直不返回-1 这个线程一直就在这里阻塞的
            while ((length = inputStream.read(buffer))!=-1){
                System.out.println(new String(buffer,0,length));
            }
            System.out.println("客户端断开连接");
        }

    }
    //服务端处理com 的连接 并没有处理 jerry的连接,那么卡在inputStream.read(buffer)) 这里 只要 com连接不断开,主线程就一直等待
}
